package cn.itsource.ymcc.constant;

import java.math.BigDecimal;
import java.time.LocalTime;
import java.time.ZoneOffset;

/**
 * @author zongchangjiang
 * @apiNote RConst
 * @since 2020-05-27
 */
public interface RConst {

    interface Num {

        int INT_0 = 0;
        int INT_1 = 1;
        int INT_2 = 2;
        int INT_3 = 3;
        int INT_4 = 4;
        int INT_5 = 5;
        int INT_6 = 6;
        int INT_7 = 7;
        int INT_8 = 8;
        int INT_9 = 9;
        int INT_10 = 10;
        int INT_16 = 16;
        int INT_20 = 20;
        int INT_24 = 24;
        int INT_27 = 27;
        int INT_30 = 30;
        int INT_49 = 49;
        int INT_50 = 50;
        int INT_64 = 64;
        int INT_100 = 100;
        int INT_107 = 107;
        int INT_200 = 200;
        int INT_500 = 500;
        int INT_1000 = 1000;
        int INT_1000000 = 1000000;
        int INT_8999999 = 8999999;
        int INT_9999999 = 9999999;

        Integer MINUS_INTEGER_1 = -1;
        Integer INTEGER_0 = 0;
        Integer INTEGER_1 = 1;
        Integer INTEGER_2 = 2;
        Integer INTEGER_3 = 3;
        Integer INTEGER_4 = 4;
        Integer INTEGER_5 = 5;
        Integer INTEGER_6 = 6;
        Integer INTEGER_7 = 7;
        Integer INTEGER_8 = 8;
        Integer INTEGER_9 = 9;
        Integer INTEGER_12 = 12;
        Integer INTEGER_10 = 10;
        Integer INTEGER_11 = 11;
        Integer INTEGER_13 = 13;
        Integer INTEGER_14 = 14;
        Integer INTEGER_15 = 15;

        Integer INTEGER_30 = 30;
        Integer INTEGER_31 = 31;
        Integer INTEGER_32 = 32;
        Integer INTEGER_33 = 33;

        Integer INTEGER_100 = 100;
        Integer INTEGER_300 = 300;

        Integer INTEGER_1032 = 1032;
        Integer INTEGER_1031 = 1031;
        Integer INTEGER_1033 = 1033;
        Integer INTEGER_1034 = 1034;


        Long LONG_0 = 0L;
        Long LONG_1 = 1L;
        Long LONG_2 = 2L;
        Long LONG_8 = 8L;
        Long LONG_60 = 60L;

        long MINUS_BASE_LONG_1 = -1L;
        long MINUS_BASE_LONG_7 = -7L;
        long BASE_LONG_0 = 0L;
        long BASE_LONG_1 = 1L;
        long BASE_LONG_2 = 2L;
        long BASE_LONG_3 = 3L;
        long BASE_LONG_5 = 5L;
        long BASE_LONG_7 = 7L;
        long BASE_LONG_800 = 800L;
        long BASE_LONG_100 = 100L;

        BigDecimal DECIMAL_3 = new BigDecimal(Str.NUM_3);
        BigDecimal DECIMAL_D01 = new BigDecimal(Str.NUM_D01);
        BigDecimal DECIMAL_100 = new BigDecimal(Str.NUM_100);
        BigDecimal DECIMAL_300 = new BigDecimal(Str.NUM_300);
        BigDecimal DECIMAL_10000 = new BigDecimal(Str.NUM_10000);

        Integer INT_11 = 11;
        Long LONG_5000 = 5000L;

        Double DOUBLE_0 = 0D;
        Long LONG_10 = 10L;
        Long LONG_3 = 3L;
        Long LONG_240 = 240L;
        int INT_12 = 12;


    }

    interface Str {

        String CH_COMMA = "，";
        String CH_SPACE = " ";

        String NUM_0 = "0";
        String NUM_1 = "1";
        String NUM_2 = "2";
        String NUM_3 = "3";
        String NUM_4 = "4";
        String NUM_5 = "5";
        String NUM_6 = "6";
        String NUM_7 = "7";
        String NUM_8 = "8";
        String NUM_9 = "9";
        String NUM_100 = "100";
        String NUM_D01 = "0.01";
        String NUM_300 = "300";
        String NUM_10000 = "10000";

        String SYMBOL_UNDERSCORE = "_";

        String EMPTY_JSON_ARRAY = "[]";

        String EMPTY_JSON_OBJECT = "{}";

        String AMPERSAND = "&";
        String AND = "and";
        String AT = "@";
        String ASTERISK = "*";
        String STAR = ASTERISK;
        String BACK_SLASH = "\\";
        String COLON = ":";
        String COMMA = ",";
        String DASH = "-";
        String DOLLAR = "$";
        String DOT = ".";
        String DOTDOT = "..";
        String DOT_CLASS = ".class";
        String DOT_JAVA = ".java";
        String DOT_XML = ".xml";
        String EMPTY = "";
        String EQUALS = "=";
        String FALSE = "false";
        String SLASH = "/";
        String HASH = "#";
        String HAT = "^";
        String LEFT_BRACE = "{";
        String LEFT_BRACKET = "(";
        String LEFT_CHEV = "<";
        String DOT_NEWLINE = ",\n";
        String NEWLINE = "\n";
        String N = "n";
        String NO = "no";
        String NULL = "null";
        String OFF = "off";
        String ON = "on";
        String PERCENT = "%";
        String PIPE = "|";
        String PLUS = "+";
        String QUESTION_MARK = "?";
        String EXCLAMATION_MARK = "!";
        String QUOTE = "\"";
        String RETURN = "\r";
        String TAB = "\t";
        String RIGHT_BRACE = "}";
        String RIGHT_BRACKET = ")";
        String RIGHT_CHEV = ">";
        String SEMICOLON = ";";
        String SINGLE_QUOTE = "'";
        String BACKTICK = "`";
        String SPACE = " ";
        String TILDA = "~";
        String LEFT_SQ_BRACKET = "[";
        String RIGHT_SQ_BRACKET = "]";
        String TRUE = "true";
        String UNDERSCORE = "_";
        String UTF_8 = "UTF-8";
        String US_ASCII = "US-ASCII";
        String ISO_8859_1 = "ISO-8859-1";
        String Y = "y";
        String YES = "yes";
        String ONE = "1";
        String ZERO = "0";
        String DOLLAR_LEFT_BRACE = "${";
        String HASH_LEFT_BRACE = "#{";
        String CRLF = "\r\n";

        String HTML_NBSP = "&nbsp;";
        String HTML_AMP = "&amp";
        String HTML_QUOTE = "&quot;";
        String HTML_LT = "&lt;";
        String HTML_GT = "&gt;";

        String[] EMPTY_ARRAY = new String[0];

        byte[] BYTES_NEW_LINE = NEWLINE.getBytes();

        /**
         * GBK 字符集
         */
        String GBK = "GBK";

        /**
         * RMI 远程方法调用
         */
        String LOOKUP_RMI = "rmi://";

        /**
         * LDAP 远程方法调用
         */
        String LOOKUP_LDAP = "ldap://";

        /**
         * http请求
         */
        String HTTP = "http://";

        /**
         * https请求
         */
        String HTTPS = "https://";
        String CONST_IMG = "img";
        String CONST_SRC = "src";
        String DOT3 = "...";
        String CONST_DATA = "data";
        String CONST_POST = "post";
        /**
         * token头部认证RFC和HTTP标准头
         */
        String AUTH_BEARER = "Bearer ";

        String UNDEFINED = "-undefined";

        String DEFAULT = "DEFAULT";
    }

    interface Time {

        ZoneOffset ZONE_OFF_SET_8 = ZoneOffset.of("+8");

        /**
         * 24小时时间戳
         */
        long HOUR_24_OF_MILLI = 24 * 60 * 60 * 1000L;

        /**
         * 7天时间秒
         */
        int DAYS_7_OF_SECONDS = 7 * 24 * 60 * 60;

        /**
         * 7天时间戳
         */
        long DAYS_7_OF_MILLI = 7 * 24 * 60 * 60 * 1000L;

        /**
         * 1小时秒值
         */
        long HOUR_1_OF_SECONDS = 60 * 60L;

        /**
         * 24小时时间戳
         */
        long SECOND_180_OF_MILLI = 3 * 60 * 1000L;

        /**
         * 2022年07月01日时间戳
         */
        long TIME_20220701_OF_MILLI = 1656604800000L;

        /**
         * LocalTime时间 00:00:00
         */
        LocalTime LOCAL_TIME_0 = LocalTime.of(Num.INT_0, Num.INT_0, Num.INT_0);

    }
}
